/*-------------------------------------------------------------------------
 *
 * pg_extension.h
 *	  "扩展" 系统目录 (pg_extension) 的定义
 *
 *
 * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/catalog/pg_extension.h
 *
 * NOTES
 *	  Catalog.pm 模块读取此文件并推导模式
 *	  信息。
 *
 *-------------------------------------------------------------------------
 */
#ifndef PG_EXTENSION_H
#define PG_EXTENSION_H

#include "catalog/genbki.h"
#include "catalog/pg_extension_d.h"

/* ----------------
 *		pg_extension 定义。 cpp 将其转换为
 *		typedef struct FormData_pg_extension
 * ----------------
 */
CATALOG(pg_extension,3079,ExtensionRelationId)
{
	Oid			oid;			/* oid */
	NameData	extname;		/* 扩展名称 */
	Oid			extowner BKI_LOOKUP(pg_authid); /* 扩展所有者 */
	Oid			extnamespace BKI_LOOKUP(pg_namespace);	/* 包含对象的命名空间 */
	bool		extrelocatable; /* 如果为真，则允许 ALTER EXTENSION SET SCHEMA */

#ifdef CATALOG_VARLEN			/* 可变长度字段从这里开始 */
	/* extversion 可能永远不为 null，但其他的可以。 */
	text		extversion BKI_FORCE_NOT_NULL;	/* 扩展版本名称 */
	Oid			extconfig[1] BKI_LOOKUP(pg_class);	/* 可转储配置 表 */
	text		extcondition[1];	/* 配置表的 WHERE 子句 */
#endif
} FormData_pg_extension;

/* ----------------
 *		Form_pg_extension 对应于指向具有 pg_extension 关系格式的元组的指针。
 * ----------------
 */
typedef FormData_pg_extension *Form_pg_extension;

DECLARE_TOAST(pg_extension, 4147, 4148);

DECLARE_UNIQUE_INDEX_PKEY(pg_extension_oid_index, 3080, ExtensionOidIndexId, on pg_extension using btree(oid oid_ops));
DECLARE_UNIQUE_INDEX(pg_extension_name_index, 3081, ExtensionNameIndexId, on pg_extension using btree(extname name_ops));

#endif							/* PG_EXTENSION_H */
